iT邦幫忙

DAY 25
1

Java Web的設計與應用系列 第 25

Day25 JAXB-載入xml去修改Class內容

  • 分享至 

  • xImage
  •  

準備技術:

  1. jaxb
  2. xml
  3. class loader

一般修改Class內容,透過JavaIO上載xml去改比較直覺,但是上載程式不簡單,所以Jaxb提供簡單方式。

  1. 首先寫一個Java bean ,加上Jaxb的annotation表示xml的對應。

    import javax.xml.bind.annotation.XmlAttribute;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;

    @XmlRootElement
    public class Student {

    String name;
    int age;
    int id;

    public String getName() {
    return name;
    }

    @XmlElement
    public void setName(String name) {
    this.name = name;
    }

    public int getAge() {
    return age;
    }

    @XmlElement
    public void setAge(int age) {
    this.age = age;
    }

    public int getId() {
    return id;
    }

    @XmlAttribute
    public void setId(int id) {
    this.id = id;
    }

    }

  2. 然後寫個xml檔案,輸入想改的內容。

  3. 然後寫個Java程式看更改內容狀況,年紀應該改成29。

    import java.io.InputStream;
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Unmarshaller;
    import model.Student;

    public class JaxbRun {

     public  static void main(String[] args){
     	JaxbRun p = new JaxbRun();
     	    p.XmlToBean();
     }
    
      private void XmlToBean() {
    
     	    try {
    
     	    	//Hook the xml file
     	       InputStream ins =JaxbRun.class.getClassLoader().getResourceAsStream("student.xml");
     	      //xml get class structure
     	       JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);
     	      Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
     	      //Binding the xml
     	      Student customer = (Student) jaxbUnmarshaller.unmarshal(ins);
     	      //Show bean result.
     	      System.out.println(customer.getAge());//Result is 29
    
     	    }
     	    catch (JAXBException e) {
     	      e.printStackTrace();
     	    }
     	  }
    

    }

  4. 上面的程式要注意,xml的檔案放置位置是相對路徑。

參考資料:

  1. jaxb官網

Day 25 結束


上一篇
Day24 探討ASM-修改Bytecode或動態產生Class
下一篇
Day26 Vaadin 探討Serialize and DeSerialize原理
系列文
Java Web的設計與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言